﻿/*
SINACOR - BMF&Bovespa
Arquivo: IAcertoIRRF.cs
Criado em: 23-jun-2010 10:46:32
Arquiteto Responsável: p-ksantos
*/
using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using System.ComponentModel;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using Sinacor.Infra.Service.Security.Services;
using Sinacor.Infra.Common.Exceptions.FaultContracts;


namespace Sinacor.Servico.Bovespa.Movimento.Service.ServiceContract 
{
    /// <summary>
    /// ServiceContract IAcertoIRRF 
    /// </summary>
	[ExceptionShielding]
	[ServiceContract(Namespace = "http://www.bovespa.com.br/Sinacor.Servico.Bovespa.Movimento.Service.ServiceContract", SessionMode = SessionMode.Allowed)]
	public interface IAcertoIRRF 
	{
		/// <summary>
		/// Altera acerto IRRF.
		/// </summary>
		/// <param name="request"></param>
        [OperationLog]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "AlterarAcertoIRRF")]
		void AlterarAcertoIRRF(DataContract.Request.AcertoIRRFRequest request);

		/// <summary>
		/// Disponibiliza uma lista de acertos IRRF.
		/// </summary>
		/// <param name="request"></param>
        [OperationLog]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ConsularAcertosIRRF")]
		List<DataContract.Response.AcertoIRRFResponse> ConsularAcertosIRRF(DataContract.Request.FiltroAcertoIRRFRequest request);

		/// <summary>
		/// Disponibiliza uma lista de Bolsas.
		/// </summary>
        [OperationLog]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ConsultarBolsas")]
		List<DataContract.Response.BolsaResponse> ConsultarBolsas();

		/// <summary>
		/// Disponibilizar uma lista de dias para liquidação.
		/// </summary>
        [OperationLog]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ConsultarDiasLiquidacao")]
		List<DataContract.Response.DiasLiquidacaoAcertoResponse> ConsultarDiasLiquidacao();

		/// <summary>
		/// Inclui acerto IRRF.
		/// </summary>
		/// <param name="request"></param>
        [OperationLog]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "IncluirAcertoIRRF")]
		void IncluirAcertoIRRF(DataContract.Request.AcertoIRRFRequest request);
	}

}